perm filename ALLTLK.INS[2,LCS] blob
sn#308322 filedate 1977-10-06 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00018 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 <Declaraions, etc.
C00004 00003 <MakeTable, Normalize
C00009 00004 <Leapfrog, bowset
C00011 00005 <SetFreq, SetAmp, SetNoise
C00013 00006 <Interpolate, numset
C00015 00007 <Prepare arrays
C00017 00008 <Formant Frequencies
C00021 00009 <Formant Amplitudes, etc
C00024 00010 <piano
C00027 00011 <vn1
C00033 00012 <vn2
C00039 00013 <Tlks
C00041 00014 <Tlks
C00043 00015 <Tlks
C00045 00016 <Tlkc
C00047 00017 <Tlkc
C00049 00018 <Tlkc
C00053 ENDMK
C⊗;
<Declaraions, etc.
OUTSPEC←"TALKER.SND/BYTESIZE=12/HEADER/PLAY/SAVE=512";
srate ← 25600; mag←512/srate; nchns←1;
EXTERNAL UNIT_GENERATOR shaper;
ARRAY
ShapeTable(512), NormTable(512), HarmAmps(10);
VARIABLE
IYv,Iv,Ev,AEv,UHv,Av,OWv,Uv,OOv,ERv,Wv,Lv,Rv,Yv,
Bc,Dc,Gc,Mc,Nc,NGc,Pc,Tc,Kc,Fc,THc,Sc,SHc,Vc,THEc,Zc,ZHc,
EEv,SSc,LLV,LHV,I2V,VVC;
ARRAY
Ramp(512), SineWave(512), AmpFunc (512);
SEG(Ramp);0 1 1 100
SEG(AmpFunc); 0,1 1,25 1,50 0,75 0,100;
SYNTH(SineWave); 1 1 999
ARRAY
FormA(64), FormB(64), FormC(64), FormD(64), SpeedD(64),
AmpA(64), AmpB(64), AmpC(64), AmpD(64);
VARIABLE
/frmampA, /frmampB, /frmampC, ccr, Memory1, Index1, Index2, Index3;
ccr ← 10;
Memory1 ← 0;
<MakeTable, Normalize;
FUNCTION MakeTable(
ARRAY F,ARRAY HarmAmps);
BEGIN
VARIABLE I,HarmNum,X,Y,Cur,Nxt,Temp,Amp,MaxHarm,MaxI;
MaxI ← LENGTH(F)-1;
MaxHarm ← LENGTH(HarmAmps)-1;
WHILE HarmAmps(MaxHarm)=0 DO MaxHarm ← MaxHarm-1;
FOR I ← 0 STEP 1 UNTIL MaxI
DO BEGIN
X ← (I*2/MaxI)-1; Y ← 0;
Cur ← 1; Nxt ← X;
FOR HarmNum ← 0 STEP 1 UNTIL MaxHarm
DO BEGIN
Amp ← HarmAmps[HarmNum];
IF Amp≠0 THEN Y ← Y+Amp*Cur;
Temp ← Nxt;
Nxt ← 2*X*Nxt-Cur;
Cur ← Temp;
END;
F[I] ← Y;
END;
END;
FUNCTION Normalize(
ARRAY Table);
BEGIN
VARIABLE MaxShape,I,A,L;
MaxShape ← 0; L←Length(Table)-1;
FOR I←0 STEP 1 UNTIL L DO BEGIN
A←ABS(Table[I]);
If A>MaxShape Then MaxShape←A;
END;
FOR I←0 STEP 1 UNTIL L DO Table[I] ← (Table[I]/MaxShape);
END;
<Leapfrog, bowset;
FUNCTION LeapFrog(FormntFq,FundamFq,EvnFq,OddFq,EvnAmp,OddAmp,ScaAmp);
BEGIN
VARIABLE FqRatio, LowRatio, Diff;
FqRatio ← FormntFq / FundamFq;
LowRatio ← INT(FqRatio);
Diff ← FqRatio - LowRatio;
If LowRatio - INT(LowRatio / 2) * 2 = 0
THEN BEGIN < LowRatio is Even;
EvnAmp ← ScaAmp * (1 - Diff);
OddAmp ← ScaAmp * Diff;
EvnFq ← LowRatio * FundamFq;
OddFq ← EvnFq + FundamFq;
END
ELSE BEGIN < LowRatio is Odd;
OddAmp ← ScaAmp * (1 - Diff);
EvnAmp ← ScaAmp * Diff;
OddFq ← LowRatio * FundamFq;
EvnFq ← OddFq + FundamFq;
END;
END;
FUNCTION Bowset (b,m1,dt,at,r,d);
Begin
IF b = 0
THEN IF m1 > 0.08
THEN BEGIN
dt ← .7; at ← .2;
END
ELSE BEGIN
dt ← .7; at ← .05; r←0;
END
ELSE
IF m1 > .05
THEN BEGIN
dt ← .05; at ← .2;
END
ELSE BEGIN
dt ← .05; at ← .05; r ← 0;
END;
m1 ← dt;
IF at + dt ≥ d
THEN BEGIN
at ← d * at;
dt ← d * dt;
IF at≤.05 THEN at ← d - dt - .01;
END;
end;
<SetFreq, SetAmp, SetNoise;
FUNCTION SetFreq (pf, pp, a1,a2,b1,b2,c1,c2, bigf1,bigf2, Memory1, I,
ARRAY FA, ARRAY FB, ARRAY FC);
BEGIN
a1 ← a2; a2 ← FA[pp] * mag;
b1 ← b2; b2 ← FB[pp] * mag;
c1 ← c2; c2 ← FC[pp] * mag;
bigf1 ← bigf2; bigf2 ← pf * mag;
I ← 1 - pf / 600;
IF I < 0 THEN I ← 0;
IF Memory1 < 1 Then Begin
a1 ← a2;
b1 ← b2;
c1 ← c2;
bigf1 ← bigf2;
End;
End;
FUNCTION SetAmp (pa, pp,pf,a1,a2,b1,b2,c1,c2, biga1,biga2, Memory1,
ARRAY AA, ARRAY AB, ARRAY AC);
BEGIN
VARIABLE Mult1;
Mult1 ← 1;
IF pf > 300 Then Mult1 ← 300 / pf;
a1 ← a2; a2 ← AA[pp];
b1 ← b2; b2 ← AB[pp] * Mult1;
c1 ← c2; c2 ← AC[pp] * Mult1;
biga1 ← biga2; biga2 ← pa;
IF Memory1 < 1 Then Begin
a1 ← a2;
b1 ← b2;
c1 ← c2;
biga1 ← 0;
End;
End;
FUNCTION SetNoise(pd,pp,pm,n1,n2,i,inc,M1,
ARRAY FD, ARRAY AD, ARRAY SD);
BEGIN
VARIABLE s;
n1 ← FD[pp] * mag;
n2 ← AD[pp] * mag;
i ← 0;
IF M1 < 1 THEN s ← 1;
inc ← s / (srate * pd);
s ← SD[pp];
M1 ← pm;
PRINT P5," ";
end;
<Interpolate, numset;
FUNCTION Interpolate(FA,OFA,NFA,FB,OFB,NFB,FC,OFC,NFC,AA,OAA,NAA,
AB,OAB,NAB,AC,OAC,NAC,VD,OVD,NVD,VR,OVR,NVR,Intrp);
BEGIN
IF Intrp < 1 Then Begin
FA ← OFA + Intrp * (NFA - OFA);
FB ← OFB + Intrp * (NFB - OFB);
FC ← OFC + Intrp * (NFC - OFC);
AA ← OAA + Intrp * (NAA - OAA);
AB ← OAB + Intrp * (NAB - OAB);
AC ← OAC + Intrp * (NAC - OAC);
VD ← OVD + Intrp * (NVD - OVD);
VR ← OVR + Intrp * (NVR - OVR);
END
ELSE Begin
FA ← NFA;
FB ← NFB;
FC ← NFC;
AA ← NAA;
AB ← NAB;
AC ← NAC;
VD ← NVD;
VR ← NVR;
END;
END;
Function NumSet (Vr,Va,sf,f,dl,s1,r,i1,i2,i3,im,lf);
Begin
VR ← 5.25 + RAND * .75;
VA ← .006 + RAND * .001;
SF ← F * MAG;
DL ← 1000 / (F);
IF S1 = 0 THEN r ← .1;
I1 ← 7.5 * Im / LF;
I2 ← 5 / SQRT(F);
I3 ← IM * 30*(8.5-(LF))/F;
end;
<Prepare arrays;
FOR I ← 0 STEP 1 UNTIL LENGTH(HarmAmps)-1 DO HarmAmps[I] ← 0;
FOR I ← 0 STEP 1 UNTIL LENGTH(NormTable)-1 DO NormTable[I] ← 1;
FOR I ← 0 STEP 1 UNTIL LENGTH(AmpD)-1 DO AmpD[I] ← 400;
FOR I ← 0 STEP 1 UNTIL 31 DO AmpA[I] ← .8;
FOR I ← 0 STEP 1 UNTIL 31 DO AmpB[I] ← .17;
FOR I ← 0 STEP 1 UNTIL 31 DO AmpC[I] ← .03;
FOR I ← 0 STEP 1 UNTIL 31 DO FormD[I] ← 0;
FOR I ← 0 STEP 1 UNTIL 31 DO SpeedD[I] ← 1;
FOR I ← 33 STEP 1 UNTIL 63 DO AmpA[I] ← 0;
FOR I ← 33 STEP 1 UNTIL 63 DO AmpB[I] ← .25;
FOR I ← 33 STEP 1 UNTIL 63 DO AmpC[I] ← .15;
FOR I ← 33 STEP 1 UNTIL 63 DO FormD[I] ← 15;
FOR I ← 33 STEP 1 UNTIL 63 DO SpeedD[I] ← 10;
HarmAmps[0] ← 1;
HarmAmps[1] ← .25;
HarmAmps[2] ← -.11;
HarmAmps[3] ← -.06;
HarmAmps[4] ← .03;
MakeTable(ShapeTable,HarmAmps);
Normalize(ShapeTable);
<Formant Frequencies;
IYv ← 0; FormA[00]←270; FormB[00]←2290; FormC[00]←3010;
Iv ← 1; FormA[01]←390; FormB[01]←1990; FormC[01]←2550;
Ev ← 2; FormA[02]←530; FormB[02]←1840; FormC[02]←2480;
AEv ← 3; FormA[03]←660; FormB[03]←1720; FormC[03]←2410;
UHv ← 4; FormA[04]←520; FormB[04]←1190; FormC[04]←2390;
Av ← 5; FormA[05]←730; FormB[05]←1090; FormC[05]←2440;
OWv ← 6; FormA[06]←570; FormB[06]←840; FormC[06]←2410;
Uv ← 7; FormA[07]←440; FormB[07]←1020; FormC[07]←2240;
OOv ← 8; FormA[08]←300; FormB[08]←870; FormC[08]←2240;
ERv ← 9; FormA[09]←490; FormB[09]←1350; FormC[09]←1690;
Wv ← 10; FormA[10]←300; FormB[10]←610; FormC[10]←2200;
Lv ← 11; FormA[11]←380; FormB[11]←880; FormC[11]←2575;
Rv ← 12; FormA[12]←420; FormB[12]←1300; FormC[12]←1600;
Yv ← 13; FormA[13]←300; FormB[13]←2200; FormC[13]←3065;
EEv ← 14; FormA[14]←260; FormB[14]←3500; FormC[14]←3800;
LHV ← 15; FormA[15]←280; FormB[15]←1450; FormC[15]←1600;
LV ← 16; FormA[16]←300; FormB[16]←1300; FormC[16]←3000;
I2V ← 17; FormA[17]←350; FormB[17]←2300; FormC[17]←3340;
Bc ← 34; FormA[34]←200; FormB[34]←800; FormC[34]←1750;
Dc ← 35; FormA[35]←300; FormB[35]←1700; FormC[35]←2600;
Gc ← 36; FormA[36]←250; FormB[36]←2350; FormC[36]←2000;
Mc ← 37; FormA[37]←280; FormB[37]←900; FormC[37]←2200;
Nc ← 38; FormA[38]←280; FormB[38]←1700; FormC[38]←2600;
NGc ← 39; FormA[39]←280; FormB[39]←2300; FormC[39]←2750;
Pc ← 40; FormA[40]←300; FormB[40]←800; FormC[40]←1750;
Tc ← 41; FormA[41]←200; FormB[41]←1700; FormC[41]←2600;
Kc ← 42; FormA[42]←350; FormB[42]←1350; FormC[42]←2000;
Fc ← 43; FormA[43]←175; FormB[43]←900; FormC[43]←4400;
THc ← 44; FormA[44]←200; FormB[44]←1400; FormC[44]←2200;
Sc ← 45; FormA[45]←200; FormB[45]←1300; FormC[45]←2500;
SHc ← 46; FormA[46]←200; FormB[46]←1800; FormC[46]←2000;
Vc ← 47; FormA[47]←175; FormB[47]←1100; FormC[47]←2400;
THEc ← 48; FormA[48]←200; FormB[48]←1600; FormC[48]←2200;
Zc ← 49; FormA[49]←200; FormB[49]←1300; FormC[49]←2500;
ZHc ← 50; FormA[50]←175; FormB[50]←1800; FormC[50]←2000;
SSc ← 51; FormA[51]←900; FormB[51]←2400; FormC[51]←3800;
VVC ← 52; FormA[52]←565; FormB[52]←1045; FormC[52]←2400;
<Formant Amplitudes, etc;
AmpA[34]←.1; AmpB[34]← .2; AmpC[34]← .1; AmpD[34]←10; FormD[34]←10;
AmpA[35]←0; AmpB[35]←.1; AmpC[35]←.15; AmpD[35]←400; FormD[35]←15;
AmpA[36]←.8; AmpB[36]←.15; AmpC[36]←.05; AmpD[36]←400; FormD[36]←15;
AmpA[37]←0; AmpB[37]←0; AmpC[37]←0; AmpD[37]←0; FormD[37]←15;
AmpA[38]←0; AmpB[38]←0; AmpC[38]←0; AmpD[38]←0; FormD[38]←15;
AmpA[39]←0; AmpB[39]←0; AmpC[39]←0; AmpD[39]←0; FormD[39]←15;
AmpA[40]←.25; AmpB[40]← 0; AmpC[40]← 0; AmpD[40]←400; FormD[40]←10;
AmpA[41]←0; AmpB[41]← 0; AmpC[41]← .1; AmpD[41]←400; FormD[41]←0;
AmpA[42]←.8; AmpB[42]←.15; AmpC[42]←.05; AmpD[42]←400; FormD[42]←15;
AmpA[43]←.15; AmpB[43]← 0; AmpC[43]← 0; AmpD[43]←400; FormD[43]←15;
AmpA[44]←.25; AmpB[44]← .1; AmpC[44]← .05; AmpD[44]←400; FormD[44]←15;
AmpA[45]←0; AmpB[45]← .1; AmpC[45]←.05; AmpD[45]←400; FormD[45]←10;
AmpA[46]←0; AmpB[46]←.25; AmpC[46]←.05; AmpD[46]←400; FormD[46]←15;
AmpA[47]←.2; AmpB[47]←.25; AmpC[47]←.15; AmpD[47]←400; FormD[47]←15;
AmpA[48]←.25; AmpB[48]← .1; AmpC[48]← .05; AmpD[48]←400; FormD[48]←15;
AmpA[49]←.3; AmpB[49]← .2; AmpC[49]←.1; AmpD[49]←150; FormD[49]←5;
AmpA[50]←.3; AmpB[50]← .2; AmpC[50]←.1; AmpD[50]←150; FormD[50]←5;
AmpA[51]←0; AmpB[51]← .1; AmpC[51]←.05; AmpD[51]←400; FormD[51]←10;
AmpA[52]←.2; AmpB[52]←.25; AmpC[52]←.15; AmpD[52]←400; FormD[52]←15;
SpeedD[35]←10;
SpeedD[36]←10;
SpeedD[37]←5;
SpeedD[38]←1;
SpeedD[39]←1;
SpeedD[41]←10;
SpeedD[42]←10;
SpeedD[44]←3;
SpeedD[45]←1;
SpeedD[46]←1;
SpeedD[48]←3;
SpeedD[51]←1;
<piano
ARRAY GlissFunc, DecayFunc, AmplFunc (512);
SEG(AMPLFUNC); 1,1 1,95 0,100;
SEG(GlissFunc);0,1 1,50 0,100;
SEG(DecayFunc);1,1 .6,5 .3,10 .15,25 .07,50 0,100;
Variable Pmag, /Penv, freqv2,/adder;
INSTRUMENT PIANO;
VARIABLE AMPL, DECAYLENGTH, FREQ,
PEDAL, DURATION, STRETCH,INDEX1, INDEX2,
/DECAY, /DAMPER, /MOD1, /MOD2, /STR1;
I_ONLY BEGIN
DURATION ← P2; < Set in play file
freqv2←FREQ ← P3; < Set in play file
AMPL ← P4; < Set in play file
PMag ← Freq * Mag;
INDEX1 ← 15 * (8 - ALOG(FREQ)) / (ALOG(FREQ) * ALOG(FREQ));
INDEX2 ← 75 * (8 - ALOG(FREQ)) / FREQ;
DECAYLENGTH ← 10 * SQRT(AMPL) / SQRT(FREQ);
STRETCH ← FREQ/200;
END;
Penv ← (EXPEN[10] (1, MAG * 10 / DECAYLENGTH, DECAYFUNC) ) *
(OSCIL[10] (1, MAG * 10 / P2, AMPLFUNC));
adder ← (Expen[10] (1, Mag * 10 / p2, ampfunc));
MOD1 ← OSCIL (PMag * INDEX1, (FREQ + STRETCH) * MAG, SINEWAVE);
MOD2 ← OSCIL (PMag * INDEX2, 4 * (FREQ + STRETCH) * MAG, SINEWAVE);
STR1 ← ZOSCIL ((Penv - .5 * adder) * ampl, PMag + MOD1 + MOD2, SINEWAVE);
<DSIG ← DSIG + STR1 * .05;
OUTA ← OUTA + STR1;
END;
<vn1;
Variable /NewMag0, /env0, Freqv1, durv1;
INSTRUMENT VN1;
VARIABLE Reset1, racket, OtherFreq, /Gliss, Distance, Stereo,
freq,Amp1, Amp2, Duration, AttackTime, DecayTime, mem1,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /AmpRamp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
mem1←1;
I_ONLY BEGIN
durv1 ← Duration ← P2;
freq ← Freqv1 ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if Bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← P13; <if OtherFreq ≠ freq, sets amount of glissando
LogFreq ← Alog(freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,mem1,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
env0 ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset1 ← 0);
AmpRamp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), Ramp);
Gliss ← freq + EXPEN[GlissCall] (OtherFreq - freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (env0, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, Ramp);
newmag0 ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), newmag0, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * newmag0, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * newmag0, Sinewave);
Snd ← ZOSCIL (Decay * env0 * ampRamp, newmag0 + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
<vn2;
Variable /NewMag1, /env1, Freqv2, durv2;
INSTRUMENT VN2;
VARIABLE Reset2, racket, OtherFreq, /Gliss, Distance, Stereo,
freq,Amp1, Amp2, Duration, AttackTime, DecayTime, mem2,
Index1, Index2, Index3, ScFreq, DecayLength, Switch1, Switch2,
/Mod1, /Mod2, /Mod3, /Att, /Vibrato, IMult, /Snd,
/Flutter, VibRate, VibAmp, /AmpRamp, /Decay, VibSwitch, LogFreq,
GlissLength, Bowing, DecayCall, VibCall, GlissCall, RampCall;
mem2←1;
I_ONLY BEGIN
durv2 ← Duration ← P2;
freq ← Freqv2 ← P3;
Amp1 ← P4;
Amp2 ← P5; <end volume if Bowing = 1.
OtherFreq ← P6; <Sets endpoint of Gliss.
Switch1 ← P14; <1=ARCO, 0=PIZZ.
Switch2 ← 1 - Switch1;
IMult ← P7 - (Switch2 / 4);
VibSwitch ← P8; <1 = Vib. 0 = no Vib.
Bowing ← P9; <0=Detached, 1=Legato.
Distance ← P10;
Stereo ← P11; <0=All OUTB, 1=All OUTA.
racket ← P12;
GlissLength ← P13; <if OtherFreq ≠ Freq, sets amount of glissando
LogFreq ← Alog(Freq);
DecayCall ← VibCall ← RampCall ← GlissCall ← 20;
IF Amp1 = Amp2 THEN RampCall ← SRATE;
IF Freq = OtherFreq THEN GlissCall ← SRATE;
IF VibSwitch = 0 Then VibCall ← SRATE;
IF Switch1 = 1 Then DecayCall ← SRATE;
Bowset (bowing,mem2,decaytime,attacktime,racket,duration);
NumSet(VibRate,VibAmp,ScFreq,Freq,DecayLength,Switch1,racket,
Index1,Index2,Index3,IMult,LogFreq);
END;
Decay ← Switch1 + EXPEN[DecayCall] (Switch2, MAG * 20 / DecayLength, DecayFunc);
env1 ← Switch2 +
LINEN[20] (Switch1, AttackTime/20, DecayTime/20, Duration/20, Ampfunc, Reset2 ← 0);
AmpRamp ← Amp1 + NOSCIL[RampCall] (Amp2 - Amp1, 20 * (MAG / Duration), Ramp);
Gliss ← Freq + EXPEN[GlissCall] (OtherFreq - Freq, 20 * MAG/GlissLength, GlissFunc);
Flutter ← RANDI[VibCall] (1, 200 * MAG);
Vibrato ← NOSCIL[VibCall] (env1, VibRate * MAG * 20, Sinewave);
Att ← 1 - EXPEN[20](1, MAG*640, Ramp);
newmag1 ← (1 + Flutter * .005) * (1 + Vibrato * VibAmp) * (1 +
RANDI (racket * Att, 2000 * MAG)) * Gliss * MAG;
Mod1 ← NOSCIL (Decay * ScFreq * (Att+Index1), newmag1, Sinewave);
Mod2 ← NOSCIL (Decay * ScFreq * (Att+Index2), 4 * newmag1, Sinewave);
Mod3 ← NOSCIL (Decay * ScFreq * (Att+Index3), 3 * newmag1, Sinewave);
Snd ← ZOSCIL (Decay * env1 * ampRamp, newmag1 + Mod1 + Mod2 + Mod3, Sinewave);
<DSIG ← DSIG + Snd * .05;
OUTA ← OUTA + Snd * Stereo / Distance;
<OUTB ← OUTB + Snd * (1 - Stereo) / Distance;
END;
<Tlks;
VARIABLE
/SigAmp0, /TlkFrq0,
/FrFrqA0, /FrFrqB0, /FrFrqC0;
INSTRUMENT TLKS1;
VARIABLE
/Xciter, /Driver,
/EvnAmpA, /OddAmpA, /EvnFrqA, /OddFrqA, /FrmSigA,
/EvnAmpB, /OddAmpB, /EvnFrqB, /OddFrqB, /FrmSigB,
/EvnAmpC, /OddAmpC, /EvnFrqC, /OddFrqC, /FrmSigC;
tlkfrq0 ← newmag0;
Xciter ← CZOSCIL(1, TlkFrq0, sinewave);
Driver ← SHAPER(ShapeTable, NormTAble, Xciter, Index1);
VALUE[ccr](leapfrog(
FrFrqA0, TlkFrq0, EvnFrqA, OddFrqA, EvnAmpA, OddAmpA, FrmAmpA));
FrmSigA ← NOSCIL(EvnAmpA, EvnFrqA , sinewave) +
NOSCIL(OddAmpA, OddFrqA , sinewave);
VALUE[ccr](leapfrog(
FrFrqB0, TlkFrq0, EvnFrqB, OddFrqB, EvnAmpB, OddAmpB, FrmAmpB));
FrmSigB ← NOSCIL(EvnAmpB, EvnFrqB , sinewave) +
NOSCIL(OddAmpB, OddFrqB , sinewave);
VALUE[ccr](leapfrog(
FrFrqC0, TlkFrq0, EvnFrqC, OddFrqC, EvnAmpC, OddAmpC, FrmAmpC));
FrmSigC ← NOSCIL(EvnAmpC, EvnFrqC , sinewave) +
NOSCIL(OddAmpC, OddFrqC , sinewave);
OUTA ← OUTA + Driver * env0 * SigAmp0 * (FrmSigA + FrmSigB + FrmSigC);
end;
<Tlks;
VARIABLE
/SigAmp1, /tlkfrq1,
/FrFrqA1, /FrFrqB1, /FrFrqC1;
INSTRUMENT TLKS2;
VARIABLE
/Xciter, /Driver,
/EvnAmpA, /OddAmpA, /EvnFrqA, /OddFrqA, /FrmSigA,
/EvnAmpB, /OddAmpB, /EvnFrqB, /OddFrqB, /FrmSigB,
/EvnAmpC, /OddAmpC, /EvnFrqC, /OddFrqC, /FrmSigC;
tlkfrq1 ← newmag1;
Xciter ← CZOSCIL(1, tlkfrq1, sinewave);
Driver ← SHAPER(ShapeTable, NormTAble, Xciter, Index2);
VALUE[ccr](leapfrog(
FrFrqA1, tlkfrq1, EvnFrqA, OddFrqA, EvnAmpA, OddAmpA, FrmAmpA));
FrmSigA ← NOSCIL(EvnAmpA, EvnFrqA , sinewave) +
NOSCIL(OddAmpA, OddFrqA , sinewave);
VALUE[ccr](leapfrog(
FrFrqB1, tlkfrq1, EvnFrqB, OddFrqB, EvnAmpB, OddAmpB, FrmAmpB));
FrmSigB ← NOSCIL(EvnAmpB, EvnFrqB , sinewave) +
NOSCIL(OddAmpB, OddFrqB , sinewave);
VALUE[ccr](leapfrog(
FrFrqC1, tlkfrq1, EvnFrqC, OddFrqC, EvnAmpC, OddAmpC, FrmAmpC));
FrmSigC ← NOSCIL(EvnAmpC, EvnFrqC , sinewave) +
NOSCIL(OddAmpC, OddFrqC , sinewave);
OUTA ← OUTA + Driver * env1 * SigAmp1 * (FrmSigA + FrmSigB + FrmSigC);
end;
<Tlks;
VARIABLE
/SigAmp2, /tlkfrq2,
/FrFrqA2, /FrFrqB2, /FrFrqC2;
INSTRUMENT TLKS3;
VARIABLE
/Xciter, /Driver,
/EvnAmpA, /OddAmpA, /EvnFrqA, /OddFrqA, /FrmSigA,
/EvnAmpB, /OddAmpB, /EvnFrqB, /OddFrqB, /FrmSigB,
/EvnAmpC, /OddAmpC, /EvnFrqC, /OddFrqC, /FrmSigC;
tlkfrq2 ← Pmag;
Xciter ← CZOSCIL(1, tlkfrq2, sinewave);
Driver ← SHAPER(ShapeTable, NormTAble, Xciter, Index3);
VALUE[ccr](leapfrog(
FrFrqA2, tlkfrq2, EvnFrqA, OddFrqA, EvnAmpA, OddAmpA, FrmAmpA));
FrmSigA ← NOSCIL(EvnAmpA, EvnFrqA , sinewave) +
NOSCIL(OddAmpA, OddFrqA , sinewave);
VALUE[ccr](leapfrog(
FrFrqB2, tlkfrq2, EvnFrqB, OddFrqB, EvnAmpB, OddAmpB, FrmAmpB));
FrmSigB ← NOSCIL(EvnAmpB, EvnFrqB , sinewave) +
NOSCIL(OddAmpB, OddFrqB , sinewave);
VALUE[ccr](leapfrog(
FrFrqC2, tlkfrq2, EvnFrqC, OddFrqC, EvnAmpC, OddAmpC, FrmAmpC));
FrmSigC ← NOSCIL(EvnAmpC, EvnFrqC , sinewave) +
NOSCIL(OddAmpC, OddFrqC , sinewave);
OUTA ← OUTA + Driver * (penv * adder) * SigAmp2 * (FrmSigA + FrmSigB + FrmSigC);
end;
<Tlkc;
INSTRUMENT TLKC1;
VARIABLE
/Intrp, Increment, OldFrqF, NewFrqF, OldAmpF, NewAmpF,
OldFrqA, NewFrqA, OldFrqB, NewFrqB, OldFrqC, NewFrqC,
OldAmpA, NewAmpA, OldAmpB, NewAmpB, OldAmpc, NewAmpC,
/Noise, NoiAmp, NoiAgi;
I_ONLY BEGIN
< p5 ← INT(Rand * 6 + 6);
SetFreq(freqv1, p5,
OldFrqA, NewFrqA, OldFrqB, NewFrqB,
OldFRqC, NewFrqC, OldFrqF, NewFrqF,
Memory1, Index1, FormA, FormB, FormC);
SetAmp(p4, p5, Freqv1,
OldAmpA, NewAmpA, OldAmpB, NewAmpB,
OldAmpC, NewAmpC, OldAmpF, NewAmpF,
Memory1, AmpA, AmpB, AmpC);
SetNoise(p2, p5, 2,
NoiAmp, Noiagi, intrp, increment, Memory1,
FormD, AmpD, SpeedD);
end;
Intrp ← Intrp + Increment;
VALUE[ccr](Interpolate( FrFrqA0,OldFrqA,NewFrqA,
FrFrqB0,OldFrqB,NewFrqB,
FrFrqC0,OldFrqC,NewFrqC,
FrmampA,OldAmpA,NewampA,
FrmampB,OldAmpB,NewAmpB,
FrmampC,OldAmpC,NewAmpC,
TlkFrq0,OldFrqF,NewFrqF,
SigAmp0,OldAmpF,NewAmpF,Intrp));
Noise ← RANDH(noiamp, noiagi);
END;
<Tlkc;
INSTRUMENT TLKC2;
VARIABLE
/Intrp, Increment, OldFrqF, NewFrqF, OldAmpF, NewAmpF,
OldFrqA, NewFrqA, OldFrqB, NewFrqB, OldFrqC, NewFrqC,
OldAmpA, NewAmpA, OldAmpB, NewAmpB, OldAmpc, NewAmpC,
/Noise, NoiAmp, NoiAgi;
I_ONLY BEGIN
<< P5 ← INT(64 + 64*rand);
< If p5 > 17 THEN If p5 < 34 Then p5 ← INT(Rand * 4 + 4);
< If p5 > 52 THEN p5 ← INT(Rand * 4 + 4);
SetFreq(freqv1, p5,
OldFrqA, NewFrqA, OldFrqB, NewFrqB,
OldFRqC, NewFrqC, OldFrqF, NewFrqF,
Memory1, Index2, FormA, FormB, FormC);
SetAmp(p4, p5, freqv1,
OldAmpA, NewAmpA, OldAmpB, NewAmpB,
OldAmpC, NewAmpC, OldAmpF, NewAmpF,
Memory1, AmpA, AmpB, AmpC);
SetNoise(DURV2, p5, 0,
NoiAmp, Noiagi, intrp, increment, Memory1,
FormD, AmpD, SpeedD);
end;
Intrp ← Intrp + Increment;
VALUE[ccr](Interpolate( FrFrqA1,OldFrqA,NewFrqA,
FrFrqB1,OldFrqB,NewFrqB,
FrFrqC1,OldFrqC,NewFrqC,
FrmampA,OldAmpA,NewampA,
FrmampB,OldAmpB,NewAmpB,
FrmampC,OldAmpC,NewAmpC,
TlkFrq1,OldFrqF,NewFrqF,
SigAmp1,OldAmpF,NewAmpF,Intrp));
Noise ← RANDH(noiamp, noiagi);
END;
<Tlkc;
INSTRUMENT TLKC3;
VARIABLE
/Intrp, Increment, OldFrqF, NewFrqF, OldAmpF, NewAmpF,
OldFrqA, NewFrqA, OldFrqB, NewFrqB, OldFrqC, NewFrqC,
OldAmpA, NewAmpA, OldAmpB, NewAmpB, OldAmpc, NewAmpC,
/Noise, NoiAmp, NoiAgi;
I_ONLY BEGIN
P5 ← INT(RAND * 6 + 6);
SetFreq(freqv2, p5,
OldFrqA, NewFrqA, OldFrqB, NewFrqB,
OldFRqC, NewFrqC, OldFrqF, NewFrqF,
Memory1, Index3, FormA, FormB, FormC);
Index3 ← 1;
SetAmp(p4, p5, freqv2,
OldAmpA, NewAmpA, OldAmpB, NewAmpB,
OldAmpC, NewAmpC, OldAmpF, NewAmpF,
Memory1, AmpA, AmpB, AmpC);
SetNoise(p2, p5, 2,
NoiAmp, Noiagi, intrp, increment, Memory1,
FormD, AmpD, SpeedD);
end;
Intrp ← Intrp + Increment;
VALUE[ccr](Interpolate( FrFrqA2,OldFrqA,NewFrqA,
FrFrqB2,OldFrqB,NewFrqB,
FrFrqC2,OldFrqC,NewFrqC,
FrmampA,OldAmpA,NewampA,
FrmampB,OldAmpB,NewAmpB,
FrmampC,OldAmpC,NewAmpC,
TlkFrq2,OldFrqF,NewFrqF,
SigAmp2,OldAmpF,NewAmpF,Intrp));
END;